/**
 * 重写String
 */
Fw.apply(String.prototype, {
    /**
     * 替换全部
     */
    replaceAll: function(oldStr, newStr){
        return this.replace(new RegExp(oldStr, 'gm'), newStr);
    },
    /**
     * 去掉两端空格
     * @param  all 是否全部（true全部，默认false）
     */
    trim: function(all){
        if(all === true){
            //全部
            return this.replaceAll(' ', '');
        }
        else{
            //两端
            return this.replace('/(^/s*)|(/s*$)/g', '');
        }
    },
    /**
     * 去掉左端空格
     */
    leftTrim: function(){
        return this.replace('/(^[//s]*)/g', '');
    },
    /**
     * 去掉右端空格
     */
    rightTrim: function(){
        return this.replace('/([//s]*$)/g', '');
    },
    /**
     * 是否以指定的字符串开始
     */
    startsWith: function(str){
        return this.substr(0, str.length) === str;
    },
    /**
     * 是否以指定的字符串结束
     */
    endsWith: function(str){
        return this.substr(this.length - str.length) === str;
    },
    /**
     * 首字母大写
     */
    capitalize: function() {
        return this.charAt(0).toUpperCase() + this.substr(1);
    },
    /**
     * 首字母小写
     */
    uncapitalize: function() {
        return this.charAt(0).toLowerCase() + this.substr(1);
    },
    /**
     * 复制
     */
    repeat: function(count, sep) {
        if (count < 1) {
            count = 0;
        }
        for (var buf = [], i = count; i--; ) {
            buf.push(this);
        }
        return buf.join(sep || '');
    },
    /**
     * 格式化
     */
    format: function() {
        var args = arguments;
        return this.replace(/\{(\d+)\}/g, function(m, i) {
            return args[i];
        });
    }
});
